library(tidyverse) library(lubridate) # data -------------------------------------------------------------------- tw_es <- read_rds("coronavirus_es.RDS") # data preparation -------------------------------------------------------- # Para el análisis de los tweets que se hacen durante un momento determinado, # solo se necesitan las variables text y created tw_es <- tw_es %>% select(text, created) # Cuando se trabajan con fechas siempre hay que tener cuidado # con el huso horario en el que está la fecha. # Le especificamos a R que queremos que nos convierta "created" # al uso horario de España tw_es$created <- with_tz(tw_es$created, tzone = "Europe/Madrid") # Imaginamos que además, vamos a querer agrupar la información por # minutos. Por lo tanto, en este contexto, los segundos en los que se # publicó un tweet es irrelevante second(tw_es$created) <- 0 # Nos podemos asegurar rápidamente de que hemos # hecho las transformaciones correctamente. tw_es %>% filter(created == ymd_hms("2020-02-28 00:48:00", tz = "Europe/Madrid")) # En este caso, queremos saber la cantidad de tweets que hubo por minuto. tw_per_minute <- tw_es %>% group_by(created) %>% summarise(n = n()) # vamos a filtrar los tweets escritos en un intervalo de tiempo determinado tw_per_minute <- tw_per_minute %>% filter( created > ymd_hms("2020-02-27 00:00:00", tz = "Europe/Madrid"), created < ymd_hms("2020-02-29 00:00:00", tz = "Europe/Madrid") ) # Si representamos la información p <- tw_per_minute %>% ggplot( aes(x = created, y = n ) ) + geom_line(color = "#3eaca8") + labs( title = "Número de tweets por minuto", y = "", x = "" ) + theme_minimal() + scale_x_datetime(date_breaks = "30 mins", date_labels = "%H:%M" ) p # Según en qué contexto, puede ser útil tener un # gráfico dinámico. # La librería plotly nos permite convertir el # gráfico estático que hemos hecho antes # en uno interactivo de forma muy sencilla. plotly::ggplotly(p)